using Microsoft.EntityFrameworkCore;
using Admin3000.Backend.Api.Entity;

namespace Admin3000.Backend.Api.Db
{
    public class Admin3000Db : DbContext
    {
        // 因为我们使用AddDbContext到容器，所以此处必须得有带参数的构造函数（而且必须传递DbContextOptions类型的参数，同时父类也得调用这个参数）
        public Admin3000Db(DbContextOptions options):base(options)
        {

        }

        public DbSet<Users> Users { get; set; }
        public DbSet<Roles> Roles { get; set; }
        public DbSet<UserRoles> UserRoles { get; set; }
        public DbSet<AuditInfo> AuditInfo { get; set; }
        public DbSet<UploadFileInfo> UploadFileInfo { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder builder)
        {
            // 使用配置文件的方式，将数据库字符串加载进来（见StartUp中注册数据库上下文）
            // builder.UseSqlServer(@"server=.;database=Admin3000;uid=sa;pwd=123456;");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder){
            // 初始化一个管理员用户 虽然Id是自动生成，但此处必须明确指定
            modelBuilder.Entity<Users>().HasData(
                new Users{
                    Id=1,
                    Username="admin",
                    Password="113",
                    Nickname="超级管理员",
                    IsActived=true,
                    IsDeleted=false,
                    CreatedTime=System.DateTime.Now,
                    UpdatedTime=System.DateTime.Now,
                    DisplayOrder=0,
                    Remarks=null
                }       
            );
            base.OnModelCreating(modelBuilder);
        }
    }
}